import axios from 'axios';
import { useAuthStore } from '../store/auth';
import router from '../router';
const apiUrl = import.meta.env.VITE_API_BASE_URL;

// 文件上传服务地址
export const UPLOAD_SERVICE_URL = 'https://upload.xsjc-pixel.com';

const service = axios.create({
  baseURL: apiUrl,
  timeout: 30000,
  headers: {
    'Content-Type': 'application/json'
  }
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    const authStore = useAuthStore();
    const token = authStore.token;
    // 如果 token 存在，将其添加到请求头中
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截器（可选）
service.interceptors.response.use(
  (response) => {
    // 对响应数据做点什么
    const newToken = response.headers['X-Auth-Token'];
    if (newToken) {
      localStorage.setItem('token', newToken)
    }
    return response.data;
  },
  (error) => {
    // 对响应错误做点什么
    if (error.response && error.response.status === 401) {
      // 如果收到 401 未授权响应，可以在这里处理 token 过期或无效的情况
      const authStore = useAuthStore();
      authStore.logout();
      router.push({ name: 'Login' })
    }
    return Promise.reject(error?.response?.data);
  }
);

export default service;